settings.tsx 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import { PageContainer } from 'ui-patterns/PageContainer'
  2. import {
  3. PageHeader,
  4. PageHeaderDescription,
  5. PageHeaderMeta,
  6. PageHeaderSummary,
  7. PageHeaderTitle,
  8. } from 'ui-patterns/PageHeader'
  9. import { PageSection, PageSectionContent } from 'ui-patterns/PageSection'
  10. import { useIsJitDbAccessEnabled } from '@/components/interfaces/App/FeaturePreview/FeaturePreviewContext'
  11. import { DiskManagementPanelForm } from '@/components/interfaces/DiskManagement/DiskManagementPanelForm'
  12. import { BannedIPs } from '@/components/interfaces/Settings/Database/BannedIPs'
  13. import { ConnectionPooling } from '@/components/interfaces/Settings/Database/ConnectionPooling/ConnectionPooling'
  14. import { DatabaseReadOnlyAlert } from '@/components/interfaces/Settings/Database/DatabaseReadOnlyAlert'
  15. import ResetDbPassword from '@/components/interfaces/Settings/Database/DatabaseSettings/ResetDbPassword'
  16. import { DiskSizeConfiguration } from '@/components/interfaces/Settings/Database/DiskSizeConfiguration'
  17. import { JitDbAccessConfiguration } from '@/components/interfaces/Settings/Database/JitDatabaseAccess/JitDbAccessConfiguration'
  18. import { NetworkRestrictions } from '@/components/interfaces/Settings/Database/NetworkRestrictions/NetworkRestrictions'
  19. import { PoolingModesModal } from '@/components/interfaces/Settings/Database/PoolingModesModal'
  20. import { SettingsDatabaseEmptyStateLocal } from '@/components/interfaces/Settings/Database/SettingsDatabaseEmptyStateLocal'
  21. import { SSLConfiguration } from '@/components/interfaces/Settings/Database/SSLConfiguration'
  22. import DatabaseLayout from '@/components/layouts/DatabaseLayout/DatabaseLayout'
  23. import DefaultLayout from '@/components/layouts/DefaultLayout'
  24. import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled'
  25. import { useIsAwsCloudProvider, useIsAwsK8sCloudProvider } from '@/hooks/misc/useSelectedProject'
  26. import { IS_PLATFORM } from '@/lib/constants'
  27. import type { NextPageWithLayout } from '@/types'
  28. const DatabaseSettings: NextPageWithLayout = () => {
  29. const isAws = useIsAwsCloudProvider()
  30. const isAwsK8s = useIsAwsK8sCloudProvider()
  31. const jitDbAccessEnabled = useIsJitDbAccessEnabled()
  32. const showNewDiskManagementUI = isAws || isAwsK8s
  33. const { databaseNetworkRestrictions } = useIsFeatureEnabled(['database:network_restrictions'])
  34. return (
  35. <>
  36. <PageHeader size="small">
  37. <PageHeaderMeta>
  38. <PageHeaderSummary>
  39. <PageHeaderTitle>Database Settings</PageHeaderTitle>
  40. <PageHeaderDescription>
  41. Connections, security, and network configuration
  42. </PageHeaderDescription>
  43. </PageHeaderSummary>
  44. </PageHeaderMeta>
  45. </PageHeader>
  46. {IS_PLATFORM ? (
  47. <>
  48. <PageContainer size="small" className="flex flex-col gap-8 pb-12">
  49. <DatabaseReadOnlyAlert />
  50. <ResetDbPassword />
  51. {jitDbAccessEnabled && <JitDbAccessConfiguration />}
  52. <ConnectionPooling />
  53. <SSLConfiguration />
  54. {showNewDiskManagementUI ? (
  55. // This form is hidden if Disk and Compute form is enabled, new form is on ./settings/compute-and-disk
  56. <DiskManagementPanelForm />
  57. ) : (
  58. <DiskSizeConfiguration />
  59. )}
  60. {databaseNetworkRestrictions && <NetworkRestrictions />}
  61. <BannedIPs />
  62. </PageContainer>
  63. <PoolingModesModal />
  64. </>
  65. ) : (
  66. <PageContainer size="small" className="pb-12">
  67. <PageSection>
  68. <PageSectionContent className="space-y-4 md:space-y-8">
  69. <SettingsDatabaseEmptyStateLocal />
  70. </PageSectionContent>
  71. </PageSection>
  72. </PageContainer>
  73. )}
  74. </>
  75. )
  76. }
  77. DatabaseSettings.getLayout = (page) => (
  78. <DefaultLayout>
  79. <DatabaseLayout title="Settings">{page}</DatabaseLayout>
  80. </DefaultLayout>
  81. )
  82. export default DatabaseSettings